﻿#define _CRT_SECURE_NO_WARNINGS 1

//结构体生命
#/*include<stdio.h>
struct Stu
{
	char name[20];
	char sex[5];
	char sno[10];
	int age;
};
int main()
{
	struct Stu s1 = {"张三","男","101012209",22};
	printf("%s %s %s %d", s1.name, s1.sex, s1.sno, s1.age);
	return 0;
}*/
//结构体特殊声明
#include<stdio.h>
//struct
//{
//	int a;
//	char c;
//	double b;
//}x = {20,'a',20.3};
//struct
//{
//	int a;
//	char c;
//	double b;
//}*p;
//int main()
//{
//	printf("%d,%c,%f", x.a, x.c, x.b);
//	//p = &x;//不合适,不兼容，编译器会把这两个结构体变量当成两个类型
//	return 0;
//}

//结构体的自引用

//struct Node
//{
//	int age;	
//	struct Node* next;//方便找到下一位——>链式存储
//};//可行
//typedef struct
//{
//	int date;
//     Node* next;
//}Node;//不可行，
////解决方法如下
//typedef struct
//{
//	int date;
//	struct Node* next;
//}Node;
//结构体对齐
//#pragma pack(1)//设置默认对⻬数为1
//#pragma pack(1)//修改之后都是6
//struct S1
//{
//	char c1;
//	int i;
//	char c2;
//};//12
//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};//8
//int main()
//{
//	printf("%zd\n", sizeof(struct S1));
//	printf("%zd\n", sizeof(struct S2));
//
//	return 0;
//}
//j结构体传参
//struct S
//{
//	int date[1000];
//	int num;
//};
//void printf1(struct S s1)
//{
//	printf("%d,%d",s1.date[0],s1.num);
//}
//void printf2(struct S* s1)
//{
//	printf("%d", s1->num);
//}
//int main()
//{
//	struct S s1= { {1,2,3,4,5},500 };
//	//printf1(s1);
//	printf2(&s1);
//	return 0;
//}
//明天见喽